package servicioTraductores;

import servicioTraductores.traductoresExternos.GoogleTraductor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
 * Clase que se encarga de gestionar los distintos webservices
 * @author overflow012
 */
public class AdministradorServicio {

    Map<String, Servicio> servicios = new HashMap<String, Servicio>();
    static AdministradorServicio instancia;

    public static AdministradorServicio getInstancia() {
        if (instancia == null) {
            instancia = new AdministradorServicio();
        }
        return instancia;
    }

    /*
     * Constructor de la clase que permite agregar a la colección de servicios
     * todos los Webservice disponibles para el traductor
     */
    private AdministradorServicio() {
        ArrayList<Servicio> coleccionServicios = new ArrayList();
        coleccionServicios.add(new GoogleTraductor());
        this.agregarServicio(coleccionServicios);
    }

    /**
     * Retorna el webservice correspondiente al nombre de servico ingresado
     * @param idServicio -Nombre que identifica unívocamente a un Servicio
     * @return Servicio
     */
    public Servicio getServicio(String idServicio) {
        return servicios.get(idServicio);
    }

    /**
     *
     * @return Mapa de servicios web soportados
     */
    public Map<String, Servicio> getServicios() {
        return servicios;
    }

    /**
     * Encargado de agregar en el Map de servicios una lista de servicios
     * @param Coleccion Servicios web
     */
    private void agregarServicio(ArrayList<Servicio> coleccionServicios) {
        for (Servicio servicio : coleccionServicios) {
            servicios.put(servicio.getId(), servicio);
        }
    }
}
